Apparatus for electrically controlling device, and a method of operating it

ABSTRACT

A control system for electrical devices in a vehicle has solid state output/relay ( 12 ) modules with processing and memory capability. The output/relay module ( 12 ) is programmable to store configuration data corresponding to predetermined states for the various devices to be controlled. The output/relay ( 12 ) module has memory capability including a non-volatile component (EEROM,  47 ). A solid state input module also has processing capability, and includes memory capability. The input module has selector switches for preselecting a variety of device states. The input module further provides a visual indication of the states for these devices. A data bus ( 203 ) provides communication between said input and output modules, and a dongle ( 201 ) is selectively connected to said relay module data bus ( 203 ) for allowing changes to the configuration data ( 217 ) stored therein. The dongale ( 201 ) is programmable from a personal computer or work station.

CROSS REFERENCE TO RELATED APPLICATION

[0001] This application claims priority to a co-pending provisionalapplication filed Feb. 8, 2000 under S. No. 60/181,355 at the U.S.Patent and Trademark Office. That provisional case is incorporate byreference herein.

DETAILED DESCRIPTION

[0002]FIG. 1 is a block diagram of a system 10 which can electricallycontrol a variety of electrical devices. The system 10 may, for example,be used in a vehicle such as a car or boat to effect control ofelectrical devices such as lights, motors, pumps, and the like. Thesystem 10 includes two relay modules 26 and 27, three button modules16-18, and a four-conductor bus 22 in the form of a cable coupled toeach of the modules 12-13 and 16-18 by a respective connector 26-30. Thesystem 10 also includes a power source 32, which may be a batterypresent in a vehicle, or may be some other type of power source.

[0003] The modules 12-13 and 16-18 would typically be provided atdifferent locations. For example, if the system 10 happened to beinstalled in a boat, the relay module 12 might be located near thewiring panel for the lighting in the boat, the relay module 13 might belocated near the wiring panel for the motors and pumps, the buttonmodule 16 might be located on the main bridge, the button module 17might be located on the flying bridge, and the button module 18 might belocated in the main cabin.

[0004] In the system 10 of FIG. 1, the relay modules 12 and 13 arestructurally identical, and differ only in that the module 12 serves asa master and the module 13 serves as a slave, in a manner discussedlater. All of the button modules 16-18 also effectively serve as slavesto the master relay module 12. Since the relay modules 12 and 13 arestructurally identical, only the module 12 is described here in detail.

[0005] More specifically, the relay module 12 includes a circuit 41,which is coupled to the connector 26. The circuit 41 includes amicroprocessor shown diagrammatically at 43, a random access memory(RAM) shown diagrammatically at 46, an electrically erasable read-onlymemory (EEROM) shown diagrammatically at 47, and a read only memory(ROM) shown diagrammatically at 48. In the disclosed embodiment, theprocessor 43, RAM 46 and ROM 48 are all portions of a standardmicrocontroller integrated circuit, but it would alternatively bepossible to implement the circuit 41 using a processor, RAM and ROMwhich are in different integrated circuit chips.

[0006] The ROM 48 contains a program which is executed by the processor43. The EEROM 47 contains configuration data which will be discussed inmore detail later. The module 12 has the capability to update theconfiguration information in the EEROM 47, in a manner described in moredetail later. Aside from this upgrade procedure, the information in theEEROM 47 does not change during normal operation, or when power isturned off. In other words, the EEROM 47 is a non-volatile memory. Theprocessor 43 uses the RAM 46 for temporary storage of information whichchanges dynamically during system operation. However, any data presentin the RAM 46 will be lost when the power is turned off. Consequently,the system 10 restarts from a default configuration each time power isturned on.

[0007] The circuit 41 also includes a relay section 51, which includessixteen relays that are not separately illustrated. The sixteen relayseach have an output, and these sixteen outputs serve as control outputsfrom the circuit 41 and the module 12, as indicated at 52. These outputscan be coupled to various electrical devices to be controlled, such aslights, motors, pumps and the like.

[0008] The circuit 41 also includes an analog-to-digital (A/D) convertersection 54, and the relay module 12 has an analog input 57 which iscoupled to the A/D converter section 54. An analog signal applied to theinput 57 is converted into a digital signal by the A/D converter section54, and is then supplied to an input of the processor 43. The module 12also has a digital input 58, which is coupled to an input of theprocessor 43. Although FIG. 1 depicts one analog input 57 and onedigital input 58, the module 12 may have additional analog inputs and/oradditional digital inputs. The relay module 12 receives power in theform of a direct current (DC) voltage on two lines 61-62 from respectiveoutput terminals of the power source 32.

[0009] The relay module 12 has a jumper section 64, which is coupled tothe circuit 41. The jumper section 64 may be configured to have nojumpers, one jumper, or two or more jumpers. In the disclosedembodiment, the jumper section 64 of the module 12 has no jumpers, whichis an indication to the processor 43 in the module 12 that the module 12is the master relay module. As mentioned above, the relay module 13 isstructurally identical to the module 12, but is a slave module. In thedisclosed embodiment, the jumper section 64 of the module 13 has atleast one jumper, which is an indication to the processor 43 in module13 that the module 13 is a slave relay module. Although the disclosedembodiment uses a jumper section 64, it will be recognized that it couldoptionally be replaced with some other type of manual configurationarrangement, such as a thumbwheel, or a dual inline package (DIP) switchunit.

[0010] In the disclosed embodiment, the bus 22 includes four conductors,which respectively carry power and ground signals, digital serial data,and a serial clock signal. The serial clock signal synchronizes thetransmission of the serial data. In the disclosed embodiment, serialdata is transmitted using a technique similar to that known in theindustry as the Inter-Integrated Circuit (IIC) communication standard.However, some other type of known serial interfaces could alternativelybe used, such as the standard which is commonly used for serial ports ofpersonal computers and known in the industry as an RS232 serialinterface. In some applications, it would be possible to use a parallelbus, rather than a serial bus. Depending on the particular type ofserial or parallel interface, the bus 22 may have a larger or smallernumber of conductors than that shown in FIG. 1.

[0011] With respect to power, the master relay module 12 operatesentirely from the power received on lines 61-62 from the power source32. In contrast, since relay module 13 is designated as a slave module,it uses power received on lines 61-62 from the power source 32 tooperate its relays 51, but uses power received through the bus 22 tooperate other circuitry such as the microprocessor 43. The buttonmodules 16-18 receive all of their operational power through the powerand ground connectors in the bus 22.

[0012] The button module 16 includes a circuit 71 which is operationallycoupled to the connector 28, and which includes a microprocessor 72. Thebutton module 16 has six manually operable momentary push buttons 76-81,each of which is coupled to a respective input of the circuit 71.Adjacent each of the push buttons 76-81 is a label, one of which isidentified by reference numeral 86. Each label 86 in the disclosedembodiment carries not-illustrated indica that identifies the functionof the adjacent push button. However, other indicia could be provided,or a label could have no indicia. Each of the labels 86 is translucent,so that light will pass through it when it is illuminated from the rear.

[0013] In this regard, a respective two-color light emitting diode (LED)is provided behind each of the labels 86, and has a green portion Gindicated at 87, and a red portion R indicated at 88. The green and redportions 87 and 88 of each LED are shown separately in FIG. 1, in orderto facilitate a clear understanding of the present invention. However,it will be recognized that, in the disclosed embodiment, these portionsare implemented with a single device which, at any given point in time,can have only one of three states. In particular, it can be emitting nolight, emitting green light, or emitting red light. The circuit 71controls each of the LEDs. In the discussion which follows, a statementthat an LED is “off” is a reference to a logical state of the LED, anddoes not necessarily mean that the LED is not emitting any light.

[0014] In this regard, the system 10 treats the red portion 88 of eachLED as the operational LED, and treats the green portion 87 as abacklight for the associated label 86, so that the label 86 will bevisible even in the dark. With respect to the backlight capabilityprovided by the green portions 87 of the LEDs, the system has two modesof operation. In one operational mode, where the backlight capability isdisabled, each LED can alternate between two states, where it emits redlight from the red portion 88 when the LED is turned on, and emits nolight when the LED is turned off (because the green portion 87 and redportion 88 are both turned off). In the other operational mode, wherethe backlight capability is enabled, each LED can alternate between twostates, where it emits red light from the red portion 88 when the LED isturned on, and emits green light from the green portion 87 when the LEDis turned off. Stated differently, when a given LED is turned on, italways emits red light from the portion 88, but when the LED is turnedoff, it emits green light from the portion 88 if backlight capability isenabled, or emits no light if backlight capability is disabled. Thebacklight capability is enabled and disabled on a system-wide basis.Thus, at any given point in time, all of the LEDs which happen to be inan off state will be doing the same thing, in that they will all beemitting no light, or they will all be emitting green light.

[0015] The button module 16 includes a jumper section 91, which issimilar to the jumper section 64 described above in association with therelay module 12. The jumper section 91 of the button module 16 iscoupled to inputs of the circuit 71. In view of the foregoingdiscussion, it will be recognized that the jumper section 91 couldoptionally be replaced with some equivalent device, such as a thumbwheelor a DIP switch unit.

[0016] The other two button modules 17 and 18 are each generally similarto the button module 16, except that the button module 17 has only fourpush buttons 96-99 with four adjacent labels and LEDs, and the buttonmodule 18 has only two push buttons 101-102 with adjacent labels andLEDs. Although FIG. 1 shows one six-button module 16, one four-buttonmodule 17, and one two-button module 18, the button modules in thesystem could be any suitable combination of two-button, four-buttonand/or six-button modules. Further, although the illustrated buttonmodules each have two, four or six buttons, it will be recognized that abutton module could have some other convenient number of buttons.Similarly, although the relay modules 12-13 each have sixteen relayswith respective outputs, any other convenient number of relays could beprovided on a given relay module.

[0017] Although FIG. 1 shows three of the button modules 16-18, and twoof the relay modules 12-13, the system 10 could alternatively have alarger or smaller number of button modules, and a larger or smallernumber of relay modules. In this regard, the minimum configuration ofthe system would be one relay module, which is the relay module 12, andone of the button modules 16-18, depending on whether the number ofbuttons needed for the system was two, four, or six. With the provisionof a modified cable with one or more extra connectors, for example asshown diagrammatically at 106 and 107, the illustrated system could beexpanded to include at least one additional button module, for exampleas shown diagrammatically at 108, and/or at least one additional relaymodule, for example as shown diagrammatically at 109. On each of thebutton modules which are present in the system, the jumpers of thejumper section 91 will be set to a respective different configuration,so the button modules and the relay module 13 can be distinguished fromeach other when all such slave modules are viewed through the bus 22 bythe master relay module 12.

[0018] As mentioned above, the EEROM 47 in the relay module 12 includesconfiguration information for the system 10. The configurationinformation in the EEROM 47 serves as configuration information for theentire system. Even though the slave relay module 13 has a comparableEEROM 47, which is capable of holding similar configuration information,this capability is not used when the relay module 13 is functioning as aslave module, rather than as a master. However, the processor 43 in theslave relay module 13 does execute the program stored in the associatedROM 48, which is responsive to the associated jumper section 64 to causethe module 13 to act as a slave rather than as a master.

[0019] In the master relay module 12, the configuration information inthe EEROM 47 defines, for each push button 76-81, 96-99, and 101-102 inthe system, the relay(s), if any, which will be associated with thatpush button. A given push button may be associated with no relay, onerelay, or several relays. As one very simple example, the push button 76may be associated with three relays, and the EEROM 47 in the module 12will contain information which indicates that these three relays areassociated with the push button 76. This portion of the configurationinformation may be referred to as mapping definition information,because it defines the mapping between the pushbuttons and the relayswhich are present in the system.

[0020] The configuration information in the EEROM 47 also defines, foreach of the push buttons 76-81, 96-99 and 101-102 in the system, themanner in which the push button will operate, or in other words thefunction which it will implement. This portion of the configurationinformation may be referred to as function definition information. Astwo very simple examples, which are each discussed in more detail below,the configuration information may indicate that the push button 76 is tofunction as a momentary switch, such that the system will turn on eachrelay associated with the push button 76 while the push button 76 ispressed, and will turn off each of those relays while the push button 76is released. Alternatively, the configuration information may indicatethat the push button 76 is to function as a toggle switch, such that onepush and release of the push button 76 will cause the system to turn oneach relay associated with the push button 76, and the next push andrelease of push button 76 will cause the system to turn off each relayassociated with the pushbutton 76.

[0021] Each of the push buttons in the system may be associated with anyone of several different functions. The particular function to beimplemented by any given push button is determined when the system isbeing initially configured, as discussed later. Thereafter, the selectedfunction is always associated with that particular push button duringnormal system operation. The various functions which are available inthe system 10 of FIG. 1 are discussed below. Not all of the functionsneed to be implemented in any given system. However, when the system isbeing configured, they are all available for selection to the extentthat any one of these functions may be needed in a given system.

[0022] The available functions may be categorized as primary functionsand secondary functions. Some of the available functions may beimplemented only as a primary function, some may be implemented only asa secondary function, and some may be optionally implemented as either aprimary function or a secondary function. In more detail, every pushbutton has a primary function, which is executed immediately when thebutton is pressed, without waiting for the release of the button. Inaddition, some push buttons may optionally have a secondary function,which is carried out if the push button is pressed and held for at leastthree seconds before being released. It should be noted that, when apush button is operated to invoke the secondary function, the primaryfunction is also necessarily invoked. In particular, the primaryfunction will be invoked immediately when the push button is pressed.Thereafter, if the operator keeps the push button pressed for at leastthree seconds, the secondary function will also be invoked.

[0023] Turning in more detail to the specific functions which areavailable for each of the push buttons in the system 10, a firstfunction is that a given push button can be configured to operate as a“momentary” switch. This is a primary function, and a push button whichimplements this function can be used to control from 1 to 64 relays. Theupper limit of 64 is an arbitrary number selected for the embodimentdisclosed in FIG. 1, and could alternatively be a higher or lowernumber. TABLE 1 is a truth table showing how such a push button wouldoperate.

[0024] The first row of TABLE 1 represents the status before the pushbutton is pressed, and indicates that the system 10 has each associatedrelay turned off, and has the LED which is adjacent that push button inan off state. As discussed above, when the associated LED is in its offstate, it will be emitting no light if backlight capability is disabled,or will be emitting green light if backlight capability is enabled. Thesecond row of TABLE 1 shows what happens when the push button ispressed, and while it is manually held. In particular, the system 10turns on each associated relay, and turns on the adjacent LED. When theLED is on, it emits red light. The third row of TABLE 1 indicates whathappens when the push button is manually released. In particular, thesystem 10 turns off each associated relay, and turns off the associatedLED, so the LED again emits no light or green light, depending onwhether or not backlight capability is enabled.

[0025] The next function which can be selected for a given push buttonis a “toggle” switch function. This is a primary function, and a buttonimplementing this function can control from 1 to 64 relays. The upperlimit of 64 is an arbitrary selection, and could be higher or lower.TABLE 2 is a truth table showing the operation of the toggle function.In this regard, the left column of the table indicates how many timesthe push button has been pressed. Thus, the first row shows the statebefore the push button is pressed, where the system has eachcorresponding relay turned off, and has the corresponding LED turned offso that it emits no light or green light. The second row of TABLE 2indicates what happens when the push button is then pressed. Inparticular, the system turns on each corresponding relay, and also turnson the corresponding LED, so that it emits red light. As mentionedabove, and since this is a primary function, the change in state occursas soon as the push button is pressed, without waiting for it to bereleased. The third row of TABLE 2 shows what happens when the pushbutton is pressed again, where the system turns off each associatedrelay, and turns off the associated LED so that it emits no light orgreen light. This second change in state is also implemented as soon asthe button is pressed, without waiting for it to be released.

[0026] Another function which can be assigned to a push button is the“toggle with backlight” function. This is a primary function, and abutton implementing this function can control from 0 to 64 relays. Theupper limit of 64 has been arbitrarily selected, and could be higher orlower. TABLE 3 is a truth table showing how the system responds tooperation of a push button which is assigned this particular function.It will be noted that TABLE 3 is similar to TABLE 2, except that itincludes an additional column relating to the backlight capability. Inparticular, the first time that the push button is pressed, it togglesthe state of the backlight capability. If backlight capability wasdisabled, pressing the push button causes backlight capability to beenabled. Conversely, if backlight capability was enabled, pressing thepush button causes backlight capability to be disabled.

[0027] This foregoing explanation of the toggle with backlight functionwas based on the assumption that only one push button had the power tocontrol the backlight capability. It is possible to configure the system10 so that two or more push buttons can each control the backlightcapability. In that case, the system 10 keeps an independent record ofwhether each such button is currently indicating that backlightcapability should be on or should be off. If any one of these pushbuttons is currently indicating that backlight capability should be on,then the system keeps backlight capability enabled. However, if all ofthese push buttons are indicating that backlight capability should beoff, then the system disables backlight capability.

[0028] A final comment regarding TABLE 3 relates to the column entitled“Relay State”. It should be evident that this column relates to asituation where the push button in question is being used to control oneor more relays. If the push button configured for this function is notassigned to any relay, then the “Relay State” column can effectively beignored. The reason that such a push button might not control any relayis that it may be desirable to be able to enable and disable thebacklight capability without changing the state of any relay.

[0029] A further function which can be assigned to a push button is the“exclusive scroll” function. This is a primary function, and in thedisclosed embodiment can be implemented to control either two, three orfour relays. The upper limit of four relays is arbitrary, and it will berecognized that it would be possible to implement this function with alarger number of relays. TABLE 4, TABLE 5 and TABLE 6 are respectivetruth tables, which depict the operation of this function for tworelays, three relays and four relays, respectively.

[0030] In TABLE 4, the first row represents the state before the pushbutton is pressed. In particular, the two relays assigned to the pushbutton are both turned off by the system, and the associated LED is alsoturned off. The second row indicates that happens the first time thepush button is pressed. In particular, the first relay “A” is turned on,and the associated LED is turned on, but the second relay “B” is keptoff. The third row of TABLE 4 indicates what happens the second time thepush button is pressed. In particular, the first relay is turned off,the second relay is turned on, and the LED is kept on. The third row ofthe table shows what happens the third time the push button is pressed.The first relay is maintained in the off state, the second relay ischanged from the on state to the off state, and the LED is changed fromthe on state to the off state. TABLE 5 and TABLE 6 are similar to TABLE4, and it is believed that they will be readily understood by analogy toTABLE 4, without a separate detailed discussion.

[0031] Still another function which can be assigned to a given button isthe “inclusive scroll” function. This is a primary function, and can beimplemented in association with two relays, three relays or four relays.The upper limit of four relays is arbitrary, and could optionally behigher. TABLE 7 is a truth table showing the operation of this function.The first time the push button is pressed, the first relay “A” is turnedon, and the associated LED is turned on. The second time the push buttonis pressed, the first relay and the LED are both kept on, and the secondrelay “B” is turned from the off state to an on state. The third timethe push button is pressed, both relays and the LED are turned off.TABLE 8 and TABLE 9 are truth tables showing the inclusive scrollfunction for three relays and four relays, respectively. It is believedthat TABLES 8 and 9 will be readily understood by analogy to TABLE 7,and that a separate detailed discussion of TABLES 8 and 9 is notnecessary.

[0032] Another function which can be assigned to a given push button isthe “binary scroll” function. This is a primary function, and a buttonassigned this function can control either two relays, three relays orfour relays. The upper limit of four relays is arbitrary, and couldoptionally be larger. FIG. 10 is a truth table showing the operation ofthe binary scroll function for two relays. The first row of TABLE 10shows the state before the push button is pressed, where a first relay“A”, a second relay “B”, and an associated LED are all off. The secondrow represents the first press of the push button, which causes thefirst relay and the LED to be turned on, and the second relay to bemaintained in an off state. The third row corresponds to the secondpress of the push button, which causes the first relay to be turned off,the second relay to be turned on, and the LED to be maintained in an onstate. The fourth row corresponds to the third press of the push button,which causes the first relay to be turned back on, the second relay tobe maintained in its on state, and the LED to be maintained in its onstate. The fifth row corresponds to the fourth press of the push button,and causes the LED and both relays to be turned off.

[0033] Persons of ordinary skill in the art are familiar with the binarybit patterns which correspond to the numbers 0 to 3. In particular, thenumbers 0, 1, 2 and 3 correspond to respective binary bit patterns of“00” “01”, “10” and “11”. It will be noted that the first four rows ofthe two relay columns in TABLE 10 implement this sequence, where relay“A” is the least significant bit and relay “B” is the most significantbit.

[0034] TABLE 11 and TABLE 12 depict the operation of the binary scrollfunction for three relays and four relays, respectively. It is believedthat TABLEs 11 and 12 will each be readily understood by analogy toTABLE 10, and they are therefore not discussed here in detail.

[0035] A further function which can be assigned to a given push buttonis a “timer” function. This is always a secondary function. As discussedabove, the primary function for a given push button is invoked as soonas the button is pressed. If the button also has a secondary function,the secondary function will be invoked if the button is held for atleast three seconds before being released, and this is true even thoughthe primary function has already been invoked by the same press of thepush button. If there is a secondary function but the push button isreleased in less than three seconds, then the secondary function willnot be invoked, and only the primary function will occur.

[0036] A push button which implements the timer function can be used tocontrol from 1 to 64 relays. As discussed above, the upper limit of 64is arbitrary, and could optionally be higher or lower. In the system 10of FIG. 1, when a push button is assigned the timer function as itssecondary function, it is normally assigned a primary function which isthe toggle function discussed above in association with TABLE 2. This isarbitrary, and it will be recognized that the primary function couldalternatively be some function other than the toggle function.

[0037] TABLE 13 is a truth table showing the operation of both theprimary and secondary functions for a push button which is configured tohave the timer function as its secondary function. The primary functionis shown in the first three rows of the table, and it will be noted thatthey correspond directly to TABLE 2. The secondary function is shown inthe last two rows. In particular, the next-to-last row represents thestatus when the secondary function has not yet been invoked, where thedash indicates that the secondary function does not exert any controlwith respect to the associated LED or any associated relay. The last rowof the table indicates that the secondary function will be invoked whenthe push button is pressed and held for three seconds, and will causethe system to turn on each associated relay for a predetermined timeinterval of “X” seconds. During this time interval, the system alsoflashes the associated LED. At the end of this time interval, the systemturns off each associated relay and the associated LED, and thesecondary function terminates. The length of the time interval is setduring system configuration. The configuration information in the EEROM47 of module 12 includes a byte containing a value that defines thelength selected for the time interval during system configuration. Inthe disclosed embodiment, the predetermined time interval can range from3 seconds to 765 seconds, in 3-second increments. However, the range andincrement are arbitrary, and could be different.

[0038] Still another function which can be assigned to a push button isthe “intermittent” function. The intermittent function can optionally beeither a primary function or a secondary function, as discussed below. Apush button which implements the intermittent function can control from1 to 64 relays. The upper limit of 64 is arbitrary, and could optionallybe higher or lower. In general, when the intermittent function isenabled, there is a repeating cycle which has a length or total cycletime of “Y” seconds, and which has successive first and second portions,the first portion having a time interval of “Z” seconds, where Z is lessthan Y. The lengths of the time intervals Y and Z are set during systemconfiguration, and are stored in the configuration information in theEEROM 47 of the module 12. However, the total cycle time Y canoptionally be changed in a dynamic manner during system operation, in amanner described later. In the disclosed embodiment, the total cycletime Y can range from 3 seconds to 765 seconds in 3-second increments,but this range and increment amount are arbitrary, and could bedifferent. The first portion Z of the total cycle time can be any valueless than the time interval Y, in 3-second increments. This incrementamount is also arbitrary, and could be different.

[0039] As mentioned above, when the intermittent function is enabled,the system 10 repeatedly executes the first and second portions of thecycle in an alternating manner, and this continues until theintermittent function is disabled. During the first portion of thecycle, each associated relay and the associated LED are turned on.During the second portion, each associated relay is turned off, and theassociated LED is flashed. Each time the cycle begins, the system startstwo timers, one of which is timing the time interval Y and the otherwhich is timing the time interval Z. The first portion of the cycle isthe time period until the timer for Z expires, at which point the secondportion of the cycle begins. When the timer for Y expires, the cycleends and a new cycle is started.

[0040] TABLE 14 is a truth table showing the operation of theintermittent function when it is configured to be a primary function.The first row of TABLE 14 represents the status before the push buttonis pressed, or in other words when the intermittent function isdisabled. Each associated relay and the associated LED are off. Thesecond row represents the status when the push button is pressed inorder to enable the intermittent function. As discussed above, thesystem repeatedly executes the cycle that has the first portion of Zseconds and the second portion of Y-Z seconds. Each relay is turned onduring the first portion and off during the second portion, and theassociated LED is turned on during the first portion and is flashedduring the second portion. The third row of the table indicates whathappens when the push button is pressed again in order to disable theintermittent function. The system turns off each associated relay andthe associated LED.

[0041] TABLE 15 is a truth table showing the operation of theintermittent function when it is configured to be a secondary function.The first three rows of TABLE 15 show the operation of the primaryfunction of the button, which in this case is the toggle functiondescribed above in association with TABLE 2. However, the primaryfunction for this button could optionally be some other function. Thelast three rows of TABLE 15 show the operation of the secondary functionand correspond generally to TABLE 14, except that the push button mustbe held for 3 seconds in order to enable the intermittent function. Theintermittent function is turned off the next time the push button ispressed, whether or not the push button is held for as long as 3seconds. This corresponds to the last row of TABLE 15.

[0042] Still another function which can be assigned to a push button isan “intermittent period increment” function. This is a primary function,and a button assigned this function does not control any relays. TABLE16 is a truth table depicting the operation of this function. When thepush button is pressed, the system increments the value of Y, whichrepresents the total cycle time used for the intermittent functiondiscussed above in association with TABLE 15. In particular, each timethe push button is pressed, the system increments Y by a predeterminedincrement amount which is selected at the time of configuration. Thesystem turns on the associated LED, and keeps it on so long as thebutton is pressed. When the button is released, as indicated by the lastrow of TABLE 16, the only action taken is to turn off the associate LED.

[0043] A further function is the “intermittent period decrement”function, which is generally similar to the intermittent periodincrement function discussed above in association with TABLE 16. A truthtable for the intermittent period decrement function is shown in TABLE17. TABLE 17 should be readily understood by analogy to TABLE 16, andTABLE 17 is therefore not described separately in detail.

[0044] The button functions described above are exemplary, and it willbe recognized that it would be possible to implement variations of thesefunctions, or some other functions. As one example, it will berecognized that the time value of X discussed above in association withTABLE 13, or the time value of Z discussed above in association withTABLES 14 and 15, could be incremented or decremented by additionalfunctions similar to the increment and decrement functions discussedabove in association with TABLES 16 and 17.

[0045] A further feature of the system is the capability to beconfigured to implement “clone” buttons. A selected push button can haveup to four clone push buttons, although the upper limit of four isarbitrary and could be different. A clone is a push button andassociated LED which have exactly the same function and control exactlythe same relays as the selected push button. Actuation of any one of theclone push buttons is treated as if the selected pushbutton itself hadbeen actuated. The LEDs adjacent the clone buttons are each controlledin exactly the same manner as the LED adjacent the selected push button.Typically, the selected push button and the clone push buttons aredisposed in different physical locations. On a boat, for example, a pushbutton for controlling the running lights might be on the main bridge,and might have clones on the flying bridge and in the main cabin.

[0046] As mentioned above, the internal operational configuration of thesystem 10 of FIG. 1 is determined by the configuration informationstored in the EEROM 47. The manner in which this configurationinformation is introduced into the EEROM 47, and the manner in which itcan be updated, will now be described with reference to FIG. 2. FIG. 2shows the relay module 12 of FIG. 1, but with the cable for bus 22disconnected from the connector 26, to thereby uncouple the master relaymodule 12 from all of the other relay and button modules 13 and 16-18.FIG. 2 shows a dongle 201, which has a bus 203 disposed in a cable thatis coupled to the connector 26 of the relay module 12.

[0047] Bus 203 is a four-conductor bus equivalent to that discussedabove in association with bus 22 of FIG. 1. In particular, the bus 203includes power and ground conductors that carry a voltage differential,and the dongle 201 receives all its operating power from these twoconductors of the bus 203. The bus 203 also includes a serial dataconductor and a serial clock conductor, which are equivalent to thosediscussed above in association with the bus 22.

[0048] The dongle 201 further includes an LED 206 which is externallyvisible, and a driver circuit 207 for the LED 206. The driver circuit207 has an input coupled to the serial clock conductor of the bus. Whenthere is no activity on the bus 203, the serial clock conductor willstay at a single logic state, which causes the driver circuit 207 tokeep the LED 206 turned off. When there is activity on the bus 203, theserial clock conductor will carry an active digital clock signal, whichalternates between two logic states, in response to which the drivecircuit 207 will cause the LED 206 to turn on and off as the clocksignal changes states. This will cause the LED 206 to flash at a highrate of speed, with a duty cycle in which it is on a greater percentageof the time than it is off. Consequently, to a human eye, the LED 206will appear to be on whenever there is activity on the bus 203.

[0049] The dongle 201 also includes a memory 211, which is coupled tothe bus 203. In the disclosed embodiment, the memory 211 is acommercially available part, which includes the circuitry needed tostore information, and also includes the circuitry needed to interfacewith an IIC-compatible bus, such as the bus 203. The memory 211 is anelectrically erasable read-only memory.

[0050] The information stored in the memory 211 includes an identifierpattern 212, which serves two purposes. First, it serves a validityand/or security purpose. The processor 43 in the relay module 12 cancheck the identifier pattern 212, in order to determine whether thememory 211 in the dongle 201 currently contains valid information, asopposed to invalid information such as random bit patterns of the typecommonly known in the industry as “garbage”. Second, the identifierpattern 212 is used to indicate to the processor 43 what the processor43 should proceed to do. In particular, depending on the identifierpattern 212, the processor 43 may (1) use information from the memory211 to update the configuration information in the EEROM 47, (2) executea self-test procedure which tests various internal circuitry within thecircuit 41 of the relay module 12, or (3) carry out both theconfiguration update and the self-test procedure.

[0051] The memory 211 also stores a count 216. Due to the fact that thememory 211 is an electrically erasable memory, the processor 43 canchange the value of the count 216, for example by decrementing thecount. The purpose of the count 216 is discussed later. The memory 211also includes configuration data 217, which is the configurationinformation that is transferred from the dongle 201 to the EEROM 47 inorder to initialize or update the configuration information in the EEROM47.

[0052] Connection of the dongle 201 to the connector 26 of the relaymodule 12 is carried out while the relay module 12 is powered down. Whenpower is subsequently applied to the relay module 12, the processor 43is powered up and begins execution of an initialization portion of itsprogram. As part of this initialization portion, the processor 43 checksto see whether the relay module 12 is coupled to a dongle 201 or to someother configuration of modules (such as that shown in FIG. 1). If theprocessor 43 determines that it is coupled to a dongle 201, then theprocessor 43 begins interacting with the dongle 201, which causes thedriver circuit 207 to flash the LED 206 in a manner causing the LED 206to appear as if it is on.

[0053] The processor 43 first inputs and checks the identifier pattern212, in order to make sure that the memory 211 in the dongle 201contains valid information. If the identifier pattern 212 does notconform to one of several predetermined identifier patterns, theprocessor 212 enters an endless loop or wait state, in which it iseffectively doing nothing. This terminates activity on the bus 203,which in turn causes the LED 206 to be turned off. Alternatively, if theidentifier pattern 212 is valid, then the processor uses it to determinewhat the processor should do.

[0054] In particular, a first identifier pattern indicates that theprocessor 212 should update the configuration information in the EEROMmemory 47. If this pattern is detected, then before actually doing theupdate, the processor checks the count 216 to see if it is greater thanzero. If the count 216 is zero, it means that the dongle is notpermitted to be used for any further updates, and so the processor 43enters an endless loop or wait state without doing the update, causingthe LED 206 to be turned off. On the other hand, if the count 216 isfound to be greater than zero, the processor 43 reads in theconfiguration data 217 from the dongle 201, and stores thisconfiguration information in its EEROM 47, in place of any configurationinformation which may have already been in the EEROM 47. Next, theprocessor 43 decrements the count 216 in the dongle 201, and then theprocessor enters an endless loop or wait state, so the LED 206 turnsoff. An operator can then turn off power to the relay module 12, anddisconnect the dongle 201 from the relay module 12.

[0055] The count 216 thus permits the dongle 201 to be programmed sothat it can be used to update the master relay module 12 in each of aspecified number of systems, after which the dongle 201 cannot be usedto update any additional systems unless it is reinitialized. Thispermits a manufacturer to prepare configuration data 217 requested by adealer or customer, and sell the dealer or customer the right to updatea specified number of systems, by initializing the count 216 to equalthe number of systems. As each system is updated by the dealer orcustomer, the count 216 is decremented, until it reaches zero. When thecount 216 reaches zero, the dongle 201 cannot be used to updateconfiguration information in any other relay module, unless and until itis reprogrammed by the manufacturer.

[0056] In the disclosed embodiment, the program executed by theprocessor 43 is stored in the ROM 48, which is not an erasable orreprogrammable part. However, the ROM 48 could alternatively be anelectrically erasable read only memory, and when power is first turnedon the processor 43 could copy the program from the ROM 48 to the RAM46, and then execute the program from the RAM 46, partly for speed. Insuch a configuration, the dongle 201 could be used not only to updatethe configuration information in the EEROM 47, but could also be used tooptionally update the program in the ROM 48.

[0057] In a second scenario, when the processor 43 initially checks theidentifier pattern 212, the processor 43 may find that the identifierpattern 212 is indicating that the processor 43 should carry out theself-test procedure. The self-test program procedure is a portion of theoperational program for the processor 43, which is always stored in theROM 48. The processor 43 will then execute this self-test portion of itsprogram. When the self-test procedure is completed, the processor 43will enter a wait state or endless loop, causing the LED 206 to beturned off in order to indicate to the operator that the dongle 201 canbe disconnected. The operator will then turn off power, and disconnectthe dongle 201.

[0058] A third scenario is that, when the processor 43 checks theidentifier pattern 212, it will find that the identifier pattern 212 istelling the processor to both (1) use the configuration data 217 toupdate the configuration information in EEROM 47, as discussed above,and (2) thereafter carry out the self-test procedure described above.The processor 43 will then do these two functions in sequence (unless ofcourse the count 216 is found to be zero), and will thereafter enter await state or endless loop that causes the LED 206 to be turned off.

[0059] The technique used to program the memory 211 in the dongle 201will now be described with reference to FIG. 3. More specifically, FIG.3 shows the dongle 201, and a computer system 251. The computer system251 in the disclosed embodiment is a known type of system commonlyreferred to in the industry as a personal computer or workstation. Thecomputer system 251 includes a computer or system unit 252, which iscoupled to a keyboard 256, a pointing device such as a mouse 257, and acathode ray tube (CRT) display 258. The system unit 252 includes aprocessor 261, and a memory 262 containing a program 263 which isexecuted by the processor 261. In FIG. 3, the memory 262 is adiagrammatic representation of several different types of memory in thesystem unit 252, such as a hard disk drive and a random access memory.The system unit 252 also includes a dongle interface circuit 267, whichmay be in the form of a plug-in card inserted into an Industry StandardArchitecture (ISA) slot, or a Peripheral Component Interconnect (PCI)slot. The interface 267 is coupled by a connector 268 to the cable ofthe dongle 201.

[0060] The processor 261 executes the program 263, which permits anoperator of the computer system 251 to specify configurationinformation. In this regard, the operator would specify configurationinformation such as the arrangement of button modules and relay moduleswhich is to be used in a given system, as well as other configurationinformation such as which relays are to be controlled by which pushbuttons, the primary function to be associated with each push button,and any secondary function which is to be associated with any pushbutton. The program 263 then transforms this configuration into anappropriate format, and stores it in the configuration data portion 217of the memory 211 of the dongle 201. The program 263 also permits theoperator to specify how many systems can be updated with theconfiguration data 217, and the program 263 stores this specified numberof systems in the memory 211 as the count 216. The program 263 also asksthe operator to specify whether the dongle 201 is to cause a relaymodule to (1) update its configuration, (2) carry out the self-testprocedure, or (3) update its configuration and also carry out theself-test. The program 263 then selects a predetermined identifierpattern which corresponds to the particular option selected by theoperator, and stores this in the memory 211 as the identifier pattern212. When the dongle 201 has been fully programmed by the computersystem 251, the dongle 201 is disconnected from the computer system 251.It can thereafter be used to update and/or test the master relay modulein the manner described above in association with FIG. 2. TABLE 1MOMENTARY (Primary; 1 TO 64 Relays) BUTTON RELAY LED ACTION STATE STATERELEASE OFF OFF PRESS ON ON RELEASE OFF OFF

[0061] TABLE 2 TOGGLE (Primary; 1 TO 64 Relays) BUTTON RELAY LED PRESSSTATE STATE 0 OFF OFF 1 ON ON 2 OFF OFF

[0062] TABLE 3 TOGGLE WITH BACKLIGHT (Primary; 0 TO 64 Relays) BUTTONRELAY BACKLIGHT LED PRESS STATE STATE STATE 0 OFF OFF OFF 1 ON ON ON 2OFF OFF OFF

[0063] TABLE 4 EXCLUSIVE SCROLL (Primary; 2 Relays) BUTTON RELAY A RELAYB LED PRESS STATE STATE STATE 0 OFF OFF OFF 1 ON OFF ON 2 OFF ON ON 3OFF OFF OFF

[0064] TABLE 5 EXCLUSIVE SCROLL (Primary; 3 Relays) BUTTON RELAY A RELAYB RELAY C LED PRESS STATE STATE STATE STATE 0 OFF OFF OFF OFF 1 ON OFFOFF ON 2 OFF ON OFF ON 3 OFF OFF ON ON 4 OFF OFF OFF OFF

[0065] TABLE 6 EXCLUSIVE SCROLL (Primary; 4 Relays) BUTTON RELAY A RELAYB RELAY C RELAY D LED PRESS STATE STATE STATE STATE STATE 0 OFF OFF OFFOFF OFF 1 ON OFF OFF OFF ON 2 OFF ON OFF OFF ON 3 OFF OFF ON OFF ON 4OFF OFF OFF ON ON 5 OFF OFF OFF OFF OFF

[0066] TABLE 7 INCLUSIVE SCROLL (Primary; 2 Relays) BUTTON RELAY A RELAYB LED PRESS STATE STATE STATE 0 OFF OFF OFF 1 ON OFF ON 2 ON ON ON 3 OFFOFF OFF

[0067] TABLE 8 INCLUSIVE SCROLL (Primary; 3 Relays) BUTTON RELAY A RELAYB RELAY C LED PRESS STATE STATE STATE STATE 0 OFF OFF OFF OFF 1 ON OFFOFF ON 2 ON ON OFF ON 3 ON ON ON ON 4 OFF OFF OFF OFF

[0068] TABLE 9 INCLUSIVE SCROLL (Primary; 4 Relays) BUTTON RELAY A RELAYB RELAY C RELAY D LED PRESS STATE STATE STATE STATE STATE 0 OFF OFF OFFOFF OFF 1 ON OFF OFF OFF ON 2 ON ON OFF OFF ON 3 ON ON ON OFF ON 4 ON ONON ON ON 5 OFF OFF OFF OFF OFF

[0069] TABLE 10 BINARY SCROLL (Primary; 2 Relays) BUTTON RELAY A RELAY BLED PRESS STATE STATE STATE 0 OFF OFF OFF 1 ON OFF ON 2 OFF ON ON 3 ONON ON 4 OFF OFF OFF

[0070] TABLE 11 BINARY SCROLL (Primary; 3 Relays) BUTTON RELAY A RELAY BRELAY C LED PRESS STATE STATE STATE STATE 0 OFF OFF OFF OFF 1 ON OFF OFFON 2 OFF ON OFF ON 3 ON ON OFF ON 4 OFF OFF ON ON 5 ON OFF ON ON 6 OFFON ON ON 7 ON ON ON ON 8 OFF OFF OFF OFF

[0071] TABLE 12 BINARY SCROLL (Primary; 4 Relays) BUTTON RELAY A RELAY BRELAY C RELAY D LED PRESS STATE STATE STATE STATE STATE 0 OFF OFF OFFOFF OFF 1 ON OFF OFF OFF ON 2 OFF ON OFF OFF ON 3 ON ON OFF OFF ON 4 OFFOFF ON OFF ON 5 ON OFF ON OFF ON 6 OFF ON ON OFF ON 7 ON ON ON OFF ON 8OFF OFF OFF ON ON 9 ON OFF OFF ON ON 10 OFF ON OFF ON ON 11 ON ON OFF ONON 12 OFF OFF ON ON ON 13 ON OFF ON ON ON 14 OFF ON ON ON ON 15 ON ON ONON ON 16 OFF OFF OFF OFF OFF

[0072] TABLE 13 TIMER (Secondary; 1 TO 64 Relays) BUTTON RELAY LED PRESSSTATE STATE 0 OFF OFF 1 ON ON 2 OFF OFF 0 — — HOLD 3 SEC ON X SEC/THENOFF FLASH X SEC/THEN OFF

[0073] TABLE 14 INTERMITTENT (Primary; 1 TO 64 Relays) BUTTON RELAY LEDPRESS STATE STATE 0 OFF OFF 1 REPEAT Y SEC CYCLE: REPEAT Y SEC CYCLE: ONZ SEC/OFF Y-Z SEC ON Z SEC/FLASH Y-Z SEC 2 OFF OFF

[0074] TABLE 15 INTERMITTENT (Secondary; 1 TO 64 Relays) BUTTON RELAYLED PRESS STATE STATE 0 0FF OFF 1 ON ON 2 OFF OFF 0 — — HOLD REPEAT YSEC CYCLE: REPEAT Y SEC CYCLE: 3 SEC ON Z SEC/OFF Y-Z SEC ON Z SEC/FLASHY-Z SEC NEXT OFF OFF

[0075] TABLE 16 INTERMITTENT PERIOD INCREMENT (Primary; 0 Relays) BUTTONLED PRESS ACTION STATE PRESS INCREMENT Y ON RELEASE NONE OFF

[0076] TABLE 17 INTERMITTENT PERIOD DECREMENT (Primary; 0 Relays) BUTTONLED PRESS ACTION STATE PRESS DECREMENT Y ON RELEASE NONE OFF

We claim:
 1. A control system for electrical devices in a vehicle andcomprising: at least one solid state output/relay module with processingand memory capability, said output relay module being programmable tostore configuration data corresponding to predetermined states for thevarious devices to be controlled, and said memory capability including anon-volatile component (EEROM), at least one solid state input modulewith processing capability, said input module having selector switchesfor preselecting a variety of device states, and said input modulefurther providing a visual indication of the states for these devices, adata bus to provide communication between said input and output modules,at least one dongle for selective connection to said relay module databus connection, said dongle having a dongle memory accessible by aninternal identification pattern for storing configuration data, saiddongle being capable when connected to said data bus of altering theconfiguration data stored in said non-volatile memory of saidoutput/relay module.
 2. The control system according to claim 1 furthercharacterized by a computer selectively connected to with said dongle tovary the configuration data stored in the dongle memory, said computerincluding a program capable of communicating with said dongle memory viaan identification procedure so that the dongle can only be soreprogrammed by on authorized computer capable of conducting a properidentification of the dongle's identification pattern.